class Triangle extends Shape {
    private double side1;
    private double side2;
    private double side3;
//    if (side1 + side2 <= side3 || side1 + side3 <= side2 || side2 + side3 <= side1) {
//            throw new IllegalArgumentException("输入的三边不能构成三角形");
//        }查询AI
    public Triangle(double side1, double side2, double side3) {
        if (side1 + side2 <= side3 || side1 + side3 <= side2 || side2 + side3 <= side1) {
            throw new IllegalArgumentException("输入的三边不能构成三角形");
        }
 /*       1. throw 关键字
throw 是 Java 里用于主动抛出异常的关键字。一般在程序运行期间，当检测到不符合预期的情况时，
 可使用 throw 关键字抛出一个异常对象，以此中断当前的执行流程，将异常传递给调用者处理。

2. new IllegalArgumentException()
IllegalArgumentException 是 Java 标准库中的一个异常类，继承自 RuntimeException，属于运行时异常。
 这类异常通常表示方法接收到了不合法的参数。new IllegalArgumentException() 用于创建一个 IllegalArgumentException 类的实例对象。

3. "输入的三边不能构成三角形"
这是传递给 IllegalArgumentException 构造方法的参数，是一个字符串，作为异常的详细信息。
 当异常被捕获时，可通过 getMessage() 方法获取该信息，方便调试和定位问题。

  */
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }

    @Override
    public double calcArea() {
        double s = (side1 + side2 + side3) / 2;
        return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
    }
/*
    海伦公式
    若一个三角形的三条边长分别为 (a)、(b)、(c)，
    设半周长 (s=\frac{a + b + c}{2})，
    则该三角形的面积 (A) 可由以下公式计算： [ A = \sqrt{s(s - a)(s - b)(s - c)} ]
*/
    @Override
    public double calcPerimeter() {
        return side1 + side2 + side3;
    }
}